package com.pkk.spring.cloud.service.gateway.support;

import com.pkk.spring.cloud.service.gateway.route.InitRouteDefinitionInterface;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;

/**
 * 在内存的存储库
 *
 * @author peikunkun
 * @version V1.0
 * @date 2021-01-26 13:48
 **/
public class InMemoryUnionRepository<U> implements SpecialListSupport<U>, InitRouteDefinitionInterface {

  /**
   * 黑名单上下文
   */
  public final Set<U> BLACK_LIST_CONTEXT = new CopyOnWriteArraySet<>();


  /**
   * 添加{#id}指定到list
   *
   * @param id
   * @return boolean
   * @Param id
   * @author peikunkun
   * @date 2021/1/26 0026 下午 2:01
   * @since
   */
  @Override
  public boolean add(U id) {
    return BLACK_LIST_CONTEXT.add(id);
  }

  /**
   * 保存操作
   *
   * @return boolean
   * @Param ids
   * @author peikunkun
   * @date 2021/1/26 0026 下午 2:04
   * @since
   */
  public boolean add(List<U> ids) {
    return BLACK_LIST_CONTEXT.addAll(ids);
  }

  /**
   * 删除{@id}
   *
   * @param id
   * @return int
   * @Param id
   * @author peikunkun
   * @date 2021/1/26 0026 下午 2:01
   * @since
   */
  @Override
  public boolean delete(U id) {
    return BLACK_LIST_CONTEXT.remove(id);
  }

  /**
   * 获取所有
   *
   * @return java.util.List<U>
   * @Param
   * @author peikunkun
   * @date 2021/1/26 0026 下午 1:50
   * @since
   */
  @Override
  public Set<U> getList() {
    return BLACK_LIST_CONTEXT;
  }

  /**
   * 是否包含
   *
   * @param id
   * @return boolean
   * @Param id
   * @author peikunkun
   * @date 2021/1/26 0026 下午 1:51
   * @since
   */
  @Override
  public boolean contains(U id) {
    return BLACK_LIST_CONTEXT.contains(id);
  }

  /**
   * 初始化动态路由
   *
   * @author peikunkun
   * @date 2021/1/23 0023 上午 10:43
   */
  @Override
  public void init() throws Exception {
  }
}
